/**
 * rest 客户端
  * Created by ct on 2019-02-21 09:44:57.
 * 自动生成
 */
import http from '@/utils/http'
import BaseApi from '@/utils/BaseApi'

/**
 * rest类，提供标准的rest接口调用api
 */
export default class Rest extends BaseApi {
  /**
   * 构造函数
   * @param {String} subSys 子系统英文名（小写）
   * @param {String} module 模块英文名（小写）
   */
  constructor (subSys, module) {
    super(subSys, module)
    this.subSys = subSys
    this.module = module
  }

  /**
   * 获取列表数据
   * @param {Object} params 请求对象
   * @returns {*|AxiosPromise} 响应
   */
  getList (params) {
    let $this = this
    return http({
      method: 'get',
      url: `${$this.subSys}/${$this.module}`,
      params
    })
  }

  /**
   * 获取分页数据
   * @param {Object} params 请求参数
   * @returns {*|AxiosPromise} 响应
   */
  getPage (params) {
    let $this = this
    return http({
      method: 'get',
      url: `${$this.subSys}/${$this.module}/page`,
      params
    })
  }

  /**
   * 根据id查询数据
   * @param {Number} id 主键id
   * @returns {*|AxiosPromise} 响应
   */
  get (id) {
    let $this = this
    return http({
      method: 'get',
      url: `${$this.subSys}/${$this.module}/${id}`
    })
  }

  /**
   * 根据表主键查找数据
   * @param {Object} params 主键id
   * @returns {*|AxiosPromise} 响应
   */
  find (params) {
    let $this = this
    return http({
      method: 'get',
      url: `${$this.subSys}/${$this.module}/find`,
      params
    })
  }

  /**
   * 创建对象
   * @param {Object} data 对象数据
   * @returns {*|AxiosPromise} 响应
   */
  create (data) {
    let $this = this
    return http({
      method: 'post',
      url: `${$this.subSys}/${$this.module}`,
      data
    })
  }

  /**
   * 批量创建对象
   * @param {Object} data 对象数据
   * @returns {*|AxiosPromise} 响应
   */
  creates (data) {
    let $this = this
    return http({
      method: 'post',
      url: `${$this.subSys}/${$this.module}/batch`,
      data
    })
  }

  /**
   * 删除数据
   * @param {Object} object 待删除对象
   * @returns {*|AxiosPromise} 响应
   */
  del (object) {
    let $this = this
    return http({
      method: 'delete',
      url: `${$this.subSys}/${$this.module}/${object.id}`
    })
  }

  /**
   * 批量删除数据
   * @param {Object} ids 待删除对象
   * @returns {*|AxiosPromise} 响应
   */
  dels (ids) {
    let $this = this
    return http({
      method: 'delete',
      url: `${$this.subSys}/${$this.module}/batch`,
      params: ids
    })
  }

  /**
   * 修改模型对象
   * @param {Number} id 主键
   * @param {Object} data 模型对象
   * @returns {*|AxiosPromise} 响应
   */
  update (id, data) {
    let $this = this
    return http({
      method: 'put',
      url: `${$this.subSys}/${$this.module}`,
      data
    })
  }
}
